package com.aaa.tars.service;

import com.aaa.tars.entity.Order;
import com.aaa.tars.entity.OrderItem;
import com.aaa.tars.util.OrderStateEnum;
import com.aaa.tars.util.Page;
import com.github.pagehelper.PageInfo;

import java.util.Date;
import java.util.List;


/**
 * 销售管理-订单主表(Order)表服务接口
 *
 * @author ghz
 * @since 2025-09-08 14:33:02
 */

public interface OrderService {
    Order queryById(Integer orderId);
    Order queryByNo(String orderNo);

    PageInfo queryByPage(Page<Order> page);
    // 新增：传入订单和订单详情列表
    int insert(Order order, List<OrderItem> orderItemList);
    int update(Order order);
    int updateOrderStateByNo(String orderNo, OrderStateEnum orderState);
    // 新增：删除订单时级联删除详情
    int deleteById(Integer orderId);
    
    /**
     * 查询指定状态的订单
     * @param orderState 订单状态
     * @return 订单列表
     */
    List<Order> queryByOrderState(String orderState);
    
    /**
     * 查询指定状态且创建时间早于指定时间的订单
     * @param orderState 订单状态
     * @param createTime 创建时间阈值
     * @return 订单列表
     */
    List<Order> queryByOrderStateAndCreateTimeBefore(String orderState, Date createTime);
    
    /**
     * 根据游客ID查询订单
     * @param visitorId 游客ID
     * @return 订单列表
     */
    List<Order> queryByVisitorId(Integer visitorId);
    
    /**
     * 核销订单验证码
     * @param orderNo 订单号
     * @param verificationCode 验证码
     * @return 是否核销成功
     */
    boolean verifyTicket(String orderNo, String verificationCode);

}